/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package usuario.banco;

import estruturas.Funcionario;
import estruturas.Usuario;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;

import extras.tela_erro;
import principal.banco.bd;

/**
 *
 * @author Diego
 */
public class bd_user
{

    public static boolean verificaUser(String user, char[] senha_a) throws SQLException
    {
        ResultSet t = null;
        String senha = "";
        for (char a : senha_a)
        {
            senha += a;
        }

        PreparedStatement p = bd.getConnection().prepareStatement("SELECT count(kuser) FROM usuario WHERE  nome = ? and senha = ? ");
        p.setString(1, user);
        p.setString(2, senha);

        t = p.executeQuery();

        t.next();
        //System.out.println(t.getInt(t.findColumn("kuser")));
        if (t.getInt(1) == 0)
        {
            tela_erro tela = new tela_erro("Os dados de usuário e senha digitados não foram encontradas. Redigite os dados.");
        } else
        {
            return true;
        }


        return false;
    }

    public static void delUsuario(int valor) throws SQLException
    {
        String sql = "DELETE FROM usuario WHERE kuser = ?";

        PreparedStatement p = bd.getConnection().prepareStatement(sql);
        p.setInt(1, valor);
        p.execute();


    }

    public static LinkedList<Usuario> getUsuarios() throws SQLException
    {

        ResultSet s = bd.queryResult("SELECT kuser,u.nome, f.nome as funcionario, f.kfuncionario "
                + "FROM usuario u INNER JOIN "
                + "(select kfuncionario, nome from funcionario f "
                + "INNER JOIN pessoa p ON f.kpessoa = p.kpessoa) as f "
                + "ON u.kfuncionario = f.kfuncionario ORDER BY nome");

        LinkedList<Usuario> t = new LinkedList<>();

        while (s.next())
        {
            Usuario a = new Usuario();
            //System.out.println(s.getInt(s.findColumn("kuser")) + "|" + s.getString(s.findColumn("nome")));

            a.setKusuario(s.getInt(("kuser")));
            a.setNome(s.getString(("nome")));

            Funcionario fa = new Funcionario();
            fa.setKfuncionario(s.getInt("kfuncionario"));
            fa.setNome(s.getString("funcionario"));
            a.setFuncionario(fa);

            t.add(a);
        }
        return t;


    }

    public static boolean addUsuario(Usuario a) throws SQLException
    {

        String sql = "INSERT INTO usuario(nome,senha,kfuncionario) VALUES(?,?,?) ";

        PreparedStatement p = bd.getConnection().prepareStatement(sql);
        p.setString(1, a.getNome());
        p.setString(2, a.getSenha());
        p.setInt(3, 1);

        return !p.execute();
    }

    public static boolean editUsuario(Usuario a) throws SQLException
    {
//        String senha = "";
//        for (char a : senha_a)
//        {
//            senha += a;
//        }

        String sql = "UPDATE usuario SET senha = ? WHERE kuser = ?";
        PreparedStatement p = bd.getConnection().prepareStatement(sql);

        p.setString(1, a.getSenha());
        p.setInt(2, a.getKusuario());
        return !p.execute();
    }
}
